package com.shyroke.daydayzhuansvc.service;

import com.shyroke.daydayzhuanapi.dto.SpiderInfoDto;
import com.shyroke.daydayzhuanapi.dto.SpiderProjectDto;
import com.shyroke.daydayzhuanapi.entity.SpiderInfoEntity;
import com.shyroke.daydayzhuanapi.entity.SpiderProjectEntity;
import com.shyroke.daydayzhuansvc.util.Page;
import com.shyroke.daydayzhuansvc.util.R;
import com.shyroke.daydayzhuansvc.util.TabelData;

import java.util.Date;
import java.util.List;

public interface ISpiderService {

    /**
     * 批量保存爬取的数据
     * @param projectList
     */
    void batchSave(List<SpiderProjectDto> projectList);

    /**
     * 获取表格所需的数据
     * @param page
     * @param project
     * @return
     */
    TabelData<com.shyroke.daydayzhuanapi.dto.SpiderProjectDto> getTableData(Page page, SpiderProjectDto project);

    /**
     * 获取爬取目标来源
     * @return
     */
    List<String> getSource();

    /**
     * 根据id获取爬虫项目
     * @param id
     * @return
     */
    SpiderProjectEntity getById(Integer id);


    R spider(SpiderInfoEntity spiderInfo);

    /**
     *
     * @param siteName 目标站点名称
     * @param siteURL  目标站点链接
     * @param articleEleCssQuery 文章集合的标签
     * @param date  比较的日期
     * @param dateCssQuery 日期所在的标签
     * @param titleCssQuery 标题所在标签
     * @param urlCssQuery 文章url所在标签
     * @param descCssQuery 文章详情页面文章内容所在标签
     * @param descExcludeCssQuery 文章详情中需要排除的标签,比如广告之类的
     * @param descURLPre 文章详情URL前缀，a标签只保存文章详情的相对路径，需要加上前缀才是完整的文章详情路径
     * @param dateIgnore 是否忽略日期 true是  fasle否
     * @return
     * @throws Exception
     */
    List<SpiderProjectDto> spiderSite(String siteName, String siteURL, String articleEleCssQuery, String date
            , String dateCssQuery, String titleCssQuery, String urlCssQuery, String descCssQuery, List<String> descExcludeCssQuery, String descURLPre, boolean dateIgnore) throws Exception ;

    /**
     * 获取所有目标站点信息
     * @return
     */
    List<SpiderInfoEntity> getSpiderInfoList();

    void deleteNews(Date date);

    TabelData<SpiderInfoDto> getSiteTableData(Page page, SpiderInfoDto spiderInfo);

    void saveSiteInfo(SpiderInfoDto spiderInfo);

    void updateSite(SpiderInfoDto spiderInfo);

    void deleteBySiteName(String siteName);

    SpiderInfoDto getSiteBySiteName(String siteName);

    List<com.shyroke.daydayzhuanapi.dto.SpiderProjectDto> findByProjectNameList(List<SpiderProjectDto> spiderProjects);

    R spiderImg(String type);

    SpiderProjectEntity findById(Integer spiderProjectId);
}
